﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using BOL;
using DAL;
using System.Web.UI.WebControls;

namespace UILGestion.Chart
{
    public partial class proveedor001Chart : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                
            }
        }

        public void LoadChart(int idObra)
        {
            
             //las compras a proveedores por los meses de mayor consumo

            //var q = from a in DbUtil.Db.OrdenCompras
            //        where a.bitActivo == true
            //        group by 
            //        select a;



            decimal totalComparativo = 0;
            decimal totalOrdenCompra =0;
            decimal totalGastoObra = 0;
            decimal totalfactura = 0;
            String ObraIGV="No Incl IGV";
           
            bool incluyeIGV=DbUtil.Db.Obras.Single(p=>p.idInternal==idObra).incluyeIGV.Value;
            decimal tp = DbUtil.Db.Obras.Single(p => p.idInternal == idObra).tipoCambio.Value;
            
            if (incluyeIGV)
                 ObraIGV="Incl IGV";

            //var q= from a in DbUtil.Db.ComparativoProveedors
            //        where a.Comparativo.idObra == idObra & a.Comparativo.idEstado>2 //Aprobado2 y finalizado
            //        select a;
            var q = from a in DbUtil.Db.ComparativoItemSelecPrv
                    where a.ComparativoProveedor.Comparativo.idObra == idObra & a.ComparativoProveedor.Comparativo.idEstado > 2 //Aprobado2 y finalizado
                    select a;

            var w = from b in DbUtil.Db.OrdenCompras
                    where b.idObra == idObra & b.idTipoOrden==1
                    select b;
            
            var wqw = from b in DbUtil.Db.OrdenCompras
                    where b.idObra == idObra & b.idTipoOrden>1
                    & b.bitActivo==true
                    select b;
            
            var f = from b in DbUtil.Db.RecepcionDocs
                      where b.idObra == idObra 
                      select b;

            if (q.Count() > 0)
            {
                //totalPrespuesto = String.Format("S/. {0:N}", q.Sum(p => p.monto * p.tipoCambio).Value);
                //totalComparativo = q.Sum(p => p.totalContratado * p.tipoCambio).Value;
                totalComparativo = q.Sum(p => p.total * p.ComparativoProveedor.tipoCambio).Value;
                //decimal dolar = q.Where(p=>p.ComparativoProveedor.idMoneda==4).Sum(p => p.total * tp).Value;
                //decimal soles = q.Where(p=>p.ComparativoProveedor.idMoneda==3).Sum(p => p.total ).Value;
                //totalComparativo = dolar + soles;

            }
            if (w.Count() > 0)
            {
                //siempre se encuertra en soles
                //totalEC = String.Format("S/. {0:N}", w.Sum(p => p.monto ).Value);
                //totalUso = String.Format("S/. {0:N}", w.Sum(p => p.montoUso).Value);
                totalOrdenCompra =(incluyeIGV? w.Sum(p => p.total*p.tipoCambio).Value:w.Sum(p => p.subTotal*p.tipoCambio).Value);
                
            }
            if (wqw.Count() > 0)
            {
                //siempre se encuertra en soles
                //totalEC = String.Format("S/. {0:N}", w.Sum(p => p.monto ).Value);
                //totalUso = String.Format("S/. {0:N}", w.Sum(p => p.montoUso).Value);
                totalGastoObra = (incluyeIGV ? wqw.Sum(p => p.total * p.tipoCambio).Value : wqw.Sum(p => p.subTotal * p.tipoCambio).Value);
                  
                
            }
            if (f.Count() > 0)
            {
                //siempre se encuertra en soles
                //totalEC = String.Format("S/. {0:N}", w.Sum(p => p.monto ).Value);
                //totalUso = String.Format("S/. {0:N}", w.Sum(p => p.montoUso).Value);
                totalfactura = (incluyeIGV? f.Sum(p => p.totalMN).Value:f.Sum(p => p.netoMN).Value);
                    

            }


            ObraChart.Titles[0].Text = String.Format("TOTAL FACTURACION {0} (S/.)", ObraIGV); 
            ObraChart.Series[0].Points[0].YValues[0] = Convert.ToDouble(totalComparativo);
            ObraChart.Series[0].Points[0].LabelFormat = "{0:N}";
            ObraChart.Series[0].Points[1].YValues[0] = Convert.ToDouble(totalOrdenCompra);
            ObraChart.Series[0].Points[1].LabelFormat = "{0:N}";
            ObraChart.Series[0].Points[2].YValues[0] = Convert.ToDouble(totalGastoObra);
            ObraChart.Series[0].Points[2].LabelFormat = "{0:N}";
            ObraChart.Series[0].Points[3].YValues[0] = Convert.ToDouble(totalfactura);
            ObraChart.Series[0].Points[3].LabelFormat = "{0:N}";
            //carga de grafico
            // Set series font




        }
    }
}